# -*- coding: utf-8 -*-
from restaurante.models import *
from estoque.models import *
from django.contrib.auth.decorators import login_required, permission_required
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect, HttpResponse
from django.template import RequestContext
from registro.models import Evento
import impressao.views
from datetime import datetime

@login_required
@permission_required('relatorio.view_report')
def dia(request, dia_id):
    mensagem = False
    aviso = False
    
    css = 'relatorio'
    js = 'relatorio'
    
    if request.session.has_key('mensagem'):
        mensagem = request.session['mensagem']
        del request.session['mensagem']
    if request.session.has_key('aviso'):
        aviso = request.session['aviso']
        del request.session['aviso']
    
    if Dia_funcionamento.objects.filter(id = dia_id).count() > 0:
        # Relatório do caixa
        dia = Dia_funcionamento.objects.get(id = dia_id)
        
        dia.total_vendido_no_dia = float(dia.dinheiro) + float(dia.debito) + float(dia.cartao) + float(dia.cheque) + float(dia.crediario)
        dia.total_em_dinheiro = float(dia.dinheiro) + float(dia.valor_inicial) + float(dia.recebimento_dinheiro) + float(dia.recebimento) - float(dia.pagamento)
        
        # Relatório de mesas
        mesas = Mesa.objects.all()
        #pedidos = Pedido.objects.filter(aberto__gt = dia.aberto)
        pedidos = Pedido.objects.filter(dia = dia)
        
        
        total_mesa = {}
        total_taxa = {}
        total_mesa_taxa = {}
        total_pedidos = {}
        
        for mesa in mesas:
            total_mesa[mesa.id] = 0.0
            total_taxa[mesa.id] = 0.0
            total_mesa_taxa[mesa.id] = 0.0
            total_pedidos[mesa.id] = 0
        
        total = 0.0
        
        for pedido in pedidos:
            if pedido.desconto == '0':
                pedido.desconto = 0.0
            
            if pedido.taxa_servico:
                taxa = float(pedido.total) * float(pedido.mesa.porcentagem) / 100
            else:
                taxa = 0.0
            
            total_mesa[pedido.mesa_id]      += (float(pedido.total) - float(pedido.desconto))
            total_taxa[pedido.mesa_id]      += float(taxa)
            total_mesa_taxa[pedido.mesa_id] += (float(pedido.total) - float(pedido.desconto)) + float(taxa)
            total_pedidos[pedido.mesa_id] += 1
        
        for mesa in mesas:
            mesa.total_mesa      = total_mesa[mesa.id]
            mesa.total_taxa      = total_taxa[mesa.id]
            mesa.total_mesa_taxa = total_mesa_taxa[mesa.id]
            mesa.total_pedidos   = total_pedidos[mesa.id]
            
            mesa.pedidos = Pedido.objects.filter(mesa = mesa, dia = dia)
            for pedido in mesa.pedidos:
                if pedido.desconto == '0':
                    pedido.desconto = 0.0
                
                if pedido.taxa_servico:
                    taxa = float(pedido.total) * float(pedido.mesa.porcentagem) / 100 
                else:
                    taxa = 0.0
                    
                pedido.total_pedido = float(pedido.total) - float(pedido.desconto) + float(taxa)
                if pedido.fechado != None:
                    pedido.permanencia = pedido.fechado - pedido.aberto
                else:
                    pedido.permanencia = datetime.now() - pedido.aberto
                pedido.permanencia = str(pedido.permanencia).split()[-1].split(':')
                
                permanencia = ""
                
                if float(pedido.permanencia[0]) > 0:
                    permanencia += pedido.permanencia[0]
                    
                    if float(pedido.permanencia[0]) > 1:
                        permanencia += ' horas '
                    else:
                        permanencia += ' hora '
                
                if float(pedido.permanencia[1]) > 0:
                    if float(pedido.permanencia[0]) > 0:
                        permanencia += 'e '
                    permanencia += pedido.permanencia[1]
                    
                    if float(pedido.permanencia[1]) > 1:
                        permanencia += ' minutos'
                    else:
                        permanencia += ' minuto'
                
                if permanencia == '':
                    permanencia = 'Poucos segundos'
                
                pedido.permanencia = permanencia
            
            
        #Relatorio de setor
        setores = Setor.objects.all()
        #listar pedidos, mas ja foram listados anteriormente
        
        total_valor_setor= {}
        total_itens_setor = {}
        
        for setor in setores:
            total_valor_setor[setor.id]= 0.0
            total_itens_setor[setor.id]= 0
            
        for pedido in pedidos:
            itens = Item.objects.filter(pedido=pedido)
            for item in itens:
                if str(item.estado) == '2':
                    total_itens_setor[item.produto.setor.id]+= int(item.quantidade)
                    total_valor_setor[item.produto.setor.id]+= float(float(item.produto.preco_de_venda)*int(item.quantidade))

        for setor in setores:
            setor.total_valor_setor = total_valor_setor[setor.id]
            setor.total_itens_setor = total_itens_setor[setor.id]
            
        
        # Produtos
        total_produtos = {}
        quantidade_produtos = {}
        
        total_produtos_categoria = {}
        quantidade_produtos_categoria = {}
        
        categorias = Categoria.objects.all()
        for categoria in categorias:
            categoria.itens = Item.objects.filter(produto__categoria = categoria, pedido__dia = dia, estado = 2)
            categoria.produtos = Produto.objects.filter(categoria = categoria)
            
            for produto in categoria.produtos:
                total_produtos[produto.id] = 0.0
                quantidade_produtos[produto.id] = 0
            
            categoria.total_produtos_categoria = 0.0
            categoria.quantidade_produtos_categoria = 0
            
            for item in categoria.itens:
                total_produtos[item.produto.id] = float(total_produtos[item.produto.id]) + int(item.quantidade) * float(item.produto.preco_de_venda)
                quantidade_produtos[item.produto.id] += int(item.quantidade)
        
            for produto in categoria.produtos:
                produto.total_produtos = total_produtos[produto.id]
                produto.quantidade_produtos = quantidade_produtos[produto.id]
                
                categoria.total_produtos_categoria += total_produtos[produto.id]
                categoria.quantidade_produtos_categoria += quantidade_produtos[produto.id]
        
        pedidos_id = []
        for pedido in pedidos:
            pedidos_id.append(pedido.id)
        
        # funcionários
        funcionarios = User.objects.all()
        for funcionario in funcionarios:
            funcionario.itens = Item.objects.filter(usuario = funcionario, pedido_id__in = pedidos_id, estado = 2)
            
            funcionario.quantidade = 0
            funcionario.total = 0.0
            
            for item in funcionario.itens:
                funcionario.total = float(funcionario.total) + int(item.quantidade) * float(item.produto.preco_de_venda)
                funcionario.quantidade += item.quantidade
        
        # entrada/saída
        retiradas    = Movimentacao.objects.filter(dia = dia, tipo = True)
        recebimentos = Movimentacao.objects.filter(dia = dia, tipo = False)
        
        return render_to_response('relatorio/dia.html', locals(),
            context_instance=RequestContext(request))
        
    else:
        request.session['aviso'] = 'Tentativa de acesso falhou. Dia não existe'
        return HttpResponseRedirect('/')

def imprime_caixa(dia):
    '''
    Imprime o relatório do caixa
    '''
    
    dia = Dia_funcionamento.objects.get(id = dia)
    
    saida = ""
    if dia.evento and dia.evento != '':
        saida += dia.evento.center(dia.setor.destino.colunas) + '\n\n'
    
    saida += "Aberto em     " + dia.aberto.strftime('%d/%m/%Y - %H:%M:%S') + "\n"
    if dia.fechado:
        saida += "Fechado em    " + dia.fechado.strftime('%d/%m/%Y - %H:%M:%S') + "\n"
    else:
        saida += "Caixa aberto" + '\n'
        
    saida += "Impresso em   " + datetime.now().strftime('%d/%m/%Y - %H:%M:%S') + "\n"
    saida += '-'* dia.setor.destino.colunas + '\n'
    saida += ("Dinheiro  " + "R$ " + ("%10.2f" % dia.dinheiro).replace(".", ",")).rjust(dia.setor.destino.colunas)  + '\n'
    saida += ("Debito    " + "R$ " + ("%10.2f" % dia.debito).replace(".", ",")).rjust(dia.setor.destino.colunas)  + '\n'
    saida += ("Cartao    " + "R$ " + ("%10.2f" % dia.cartao).replace(".", ",")).rjust(dia.setor.destino.colunas)  + '\n'
    saida += ("Cheque    " + "R$ " + ("%10.2f" % dia.cheque).replace(".", ",")).rjust(dia.setor.destino.colunas)  + '\n'
    saida += ("Crediario " + "R$ " + ("%10.2f" % dia.crediario).replace(".", ",")).rjust(dia.setor.destino.colunas)  + '\n'
    saida += '-'* dia.setor.destino.colunas + '\n'
    saida += ("Total vendido no dia " + "R$ " + ("%10.2f" % (float(dia.dinheiro) + float(dia.debito) + float(dia.cartao) + float(dia.cheque) + float(dia.crediario))).replace(".", ",")).rjust(dia.setor.destino.colunas)  + '\n'
    saida += '-'* dia.setor.destino.colunas + '\n'
    saida += ("Recebido em Dinheiro  " + "R$ " + ("%10.2f" % dia.recebimento_dinheiro).replace(".", ",")).rjust(dia.setor.destino.colunas)  + '\n'
    saida += ("Recebido em Debito    " + "R$ " + ("%10.2f" % dia.recebimento_debito).replace(".", ",")).rjust(dia.setor.destino.colunas)  + '\n'
    saida += ("Recebido em Cartao    " + "R$ " + ("%10.2f" % dia.recebimento_cartao).replace(".", ",")).rjust(dia.setor.destino.colunas)  + '\n'
    saida += ("Recebido em Cheque    " + "R$ " + ("%10.2f" % dia.recebimento_cheque).replace(".", ",")).rjust(dia.setor.destino.colunas)  + '\n'
    saida += '-'* dia.setor.destino.colunas + '\n'
    saida += ("Entrada em dinheiro   " + "R$ " + ("%10.2f" % (dia.recebimento)).replace(".", ",")).rjust(dia.setor.destino.colunas)  + '\n'
    saida += ("Saida em dinheiro     " + "R$ " + ("%10.2f" % (dia.pagamento * -1)).replace(".", ",")).rjust(dia.setor.destino.colunas)  + '\n'
    saida += '-'* dia.setor.destino.colunas + '\n'
    saida += ("Fundo de caixa " + "R$ " + ("%10.2f" % dia.valor_inicial).replace(".", ",")).rjust(dia.setor.destino.colunas)  + '\n'
    saida += '-'* dia.setor.destino.colunas + '\n'
    saida += ("TOTAL EM CAIXA " + "R$ " + ("%10.2f" % (float(dia.dinheiro) + float(dia.valor_inicial) + float(dia.recebimento_dinheiro) + float(dia.recebimento) - float(dia.pagamento))).replace(".", ",")).rjust(dia.setor.destino.colunas)  + '\n'
    
    impressao.views.imprime_caixa(saida, dia.setor.destino, None, '')
    
    #dia.setor.destino
    
    pass

def imprime_mesas(dia):
    '''
    Imprime o relatório das mesas
    '''
    dia = Dia_funcionamento.objects.get(id = dia)
    
    # Relatório de mesas
    mesas = Mesa.objects.all()
    #pedidos = Pedido.objects.filter(aberto__gt = dia.aberto)
    pedidos = Pedido.objects.filter(dia = dia)
    
    
    total_mesa = {}
    total_taxa = {}
    total_mesa_taxa = {}
    total_pedidos = {}
    
    for mesa in mesas:
        total_mesa[mesa.id] = 0.0
        total_taxa[mesa.id] = 0.0
        total_mesa_taxa[mesa.id] = 0.0
        total_pedidos[mesa.id] = 0
    
    total = 0.0
    
    for pedido in pedidos:
        if pedido.desconto == '0':
            pedido.desconto = 0.0
        
        if pedido.taxa_servico:
            taxa = float(pedido.total) * float(pedido.mesa.porcentagem) / 100
        else:
            taxa = 0.0
        
        total_mesa[pedido.mesa_id]      += (float(pedido.total) - float(pedido.desconto))
        total_taxa[pedido.mesa_id]      += float(taxa)
        total_mesa_taxa[pedido.mesa_id] += (float(pedido.total) - float(pedido.desconto)) + float(taxa)
        total_pedidos[pedido.mesa_id] += 1
    
    for mesa in mesas:
        mesa.total_mesa      = total_mesa[mesa.id]
        mesa.total_taxa      = total_taxa[mesa.id]
        mesa.total_mesa_taxa = total_mesa_taxa[mesa.id]
        mesa.total_pedidos   = total_pedidos[mesa.id]
        
        mesa.pedidos = Pedido.objects.filter(mesa = mesa, dia = dia)
        for pedido in mesa.pedidos:
            if pedido.desconto == '0':
                pedido.desconto = 0.0
            
            if pedido.taxa_servico:
                taxa = float(pedido.total) * float(pedido.mesa.porcentagem) / 100 
            else:
                taxa = 0.0
                
            pedido.total_pedido = float(pedido.total) - float(pedido.desconto) + float(taxa)
            if pedido.fechado != None:
                pedido.permanencia = pedido.fechado - pedido.aberto
            else:
                pedido.permanencia = datetime.now() - pedido.aberto
            pedido.permanencia = str(pedido.permanencia).split()[-1].split(':')
            
            permanencia = ""
            
            if float(pedido.permanencia[0]) > 0:
                permanencia += pedido.permanencia[0]
                
                if float(pedido.permanencia[0]) > 1:
                    permanencia += ' horas '
                else:
                    permanencia += ' hora '
            
            if float(pedido.permanencia[1]) > 0:
                if float(pedido.permanencia[0]) > 0:
                    permanencia += 'e '
                permanencia += pedido.permanencia[1]
                
                if float(pedido.permanencia[1]) > 1:
                    permanencia += ' minutos'
                else:
                    permanencia += ' minuto'
            
            if permanencia == '':
                permanencia = 'Poucos segundos'
            
            pedido.permanencia = permanencia
    
    saida = ""

    saida += str(dia).center(dia.setor.destino.colunas) + '\n\n'
    saida += "Impresso em   " + datetime.now().strftime('%d/%m/%Y - %H:%M:%S') + "\n"
    saida += '-'* dia.setor.destino.colunas + '\n'
    
    saida += 'Mesa Pds         Valor '.ljust(dia.setor.destino.colunas - 19) + ' Taxa      Com Taxa' + '\n'
    saida += '-' * dia.setor.destino.colunas + '\n'
    
    for mesa in mesas:
        if mesa.total_mesa > 0:
            #saida += ('%.3d  %.3d    %10.2f    %10.2f    %10.2f' % (mesa.id, mesa.total_pedidos, mesa.total_mesa, mesa.total_taxa, mesa.total_mesa_taxa)).replace('.', ',') + '\n'
            saida += ('%.3d' % mesa.id).ljust(5) + ('%.3d' % mesa.total_pedidos).ljust(7) + ('%10.2f' % mesa.total_mesa).ljust(dia.setor.destino.colunas -34) + ('%8.2f' % mesa.total_taxa) + ('%10.2f' % mesa.total_mesa_taxa).rjust(14) + '\n'
    
    impressao.views.imprime_caixa(saida, dia.setor.destino, None, '')
    
def imprime_pedidos(dia):
    '''
    Imprime o relatório dos pedidos
    '''
    
    dia = Dia_funcionamento.objects.get(id = dia)
    
    # Relatório de mesas
    mesas = Mesa.objects.all()
    #pedidos = Pedido.objects.filter(aberto__gt = dia.aberto)
    pedidos = Pedido.objects.filter(dia = dia)
    
    
    total_mesa = {}
    total_taxa = {}
    total_mesa_taxa = {}
    total_pedidos = {}
    
    for mesa in mesas:
        total_mesa[mesa.id] = 0.0
        total_taxa[mesa.id] = 0.0
        total_mesa_taxa[mesa.id] = 0.0
        total_pedidos[mesa.id] = 0
    
    total = 0.0
    
    for pedido in pedidos:
        if pedido.desconto == '0':
            pedido.desconto = 0.0
        
        if pedido.taxa_servico:
            taxa = float(pedido.total) * float(pedido.mesa.porcentagem) / 100
        else:
            taxa = 0.0
        
        total_mesa[pedido.mesa_id]      += (float(pedido.total) - float(pedido.desconto))
        total_taxa[pedido.mesa_id]      += float(taxa)
        total_mesa_taxa[pedido.mesa_id] += (float(pedido.total) - float(pedido.desconto)) + float(taxa)
        total_pedidos[pedido.mesa_id] += 1
    
    for mesa in mesas:
        mesa.total_mesa      = total_mesa[mesa.id]
        mesa.total_taxa      = total_taxa[mesa.id]
        mesa.total_mesa_taxa = total_mesa_taxa[mesa.id]
        mesa.total_pedidos   = total_pedidos[mesa.id]
        
        mesa.pedidos = Pedido.objects.filter(mesa = mesa, dia = dia)
        for pedido in mesa.pedidos:
            if pedido.desconto == '0':
                pedido.desconto = 0.0
            
            if pedido.taxa_servico:
                taxa = float(pedido.total) * float(pedido.mesa.porcentagem) / 100 
            else:
                taxa = 0.0
                
            pedido.total_pedido = float(pedido.total) - float(pedido.desconto) + float(taxa)
            if pedido.fechado != None:
                pedido.permanencia = pedido.fechado - pedido.aberto
            else:
                pedido.permanencia = datetime.now() - pedido.aberto
            pedido.permanencia = str(pedido.permanencia).split()[-1].split(':')
            
            permanencia = ""
            
            if float(pedido.permanencia[0]) > 0:
                permanencia += pedido.permanencia[0]
                
                if float(pedido.permanencia[0]) > 1:
                    permanencia += ' horas '
                else:
                    permanencia += ' hora '
            
            if float(pedido.permanencia[1]) > 0:
                if float(pedido.permanencia[0]) > 0:
                    permanencia += 'e '
                permanencia += pedido.permanencia[1]
                
                if float(pedido.permanencia[1]) > 1:
                    permanencia += ' minutos'
                else:
                    permanencia += ' minuto'
            
            if permanencia == '':
                permanencia = 'Poucos segundos'
            
            pedido.permanencia = permanencia
    
    saida = ""
    
    saida += str(dia).center(dia.setor.destino.colunas) + '\n\n'
    
    for mesa in mesas:
        if mesa.total_mesa > 0:
            
            saida += '-' * dia.setor.destino.colunas + '\n'
            saida += "\nPedidos de %s" % mesa + '\n'
            saida += '-' * dia.setor.destino.colunas + '\n'
            
            saida += "Pds            Valor " + "Permanencia".rjust(dia.setor.destino.colunas - 21) + '\n'
            
            for pedido in mesa.pedidos:
                if pedido.cliente:
                    saida += "\nCliente: " + str(pedido.cliente) + '\n'
                
                if pedido.fechado:
                    saida += "%.9d %10.2f " % (pedido.id, pedido.total_pedido) + pedido.permanencia.rjust(dia.setor.destino.colunas - 21) + '\n'
                else:
                    saida += impressao.views.italico("%.9d %10.2f " % (pedido.id, pedido.total_pedido) + pedido.permanencia.rjust(dia.setor.destino.colunas - 21)) + '\n'
    
    saida += '\n' + impressao.views.italico('Informacoes em italico indica um pedido aberto').center(dia.setor.destino.colunas) + '\n'
    impressao.views.imprime_caixa(saida, dia.setor.destino, None, '')

def imprime_setor(dia):
    '''
    Imprime o relatório dos setores
    '''
    
    dia = Dia_funcionamento.objects.get(id = dia)
    pedidos = Pedido.objects.filter(dia = dia)
    
    #Relatorio de setor
    setores = Setor.objects.all()
    #listar pedidos, mas ja foram listados anteriormente
    
    total_valor_setor= {}
    total_itens_setor = {}
    
    for setor in setores:
        total_valor_setor[setor.id]= 0.0
        total_itens_setor[setor.id]= 0
        
    for pedido in pedidos:
        itens = Item.objects.filter(pedido=pedido)
        for item in itens:
            if str(item.estado) == '2':
                total_itens_setor[item.produto.setor.id]+= int(item.quantidade)
                total_valor_setor[item.produto.setor.id]+= float(float(item.produto.preco_de_venda)*int(item.quantidade))

    for setor in setores:
        setor.total_valor_setor = total_valor_setor[setor.id]
        setor.total_itens_setor = total_itens_setor[setor.id]
        
    saida = ""
    saida += str(dia).center(dia.setor.destino.colunas) + '\n\n'
    
    saida += "Setor".ljust(dia.setor.destino.colunas - 20) + " Itens         Valor".rjust(19) + '\n'
    saida += '-' * dia.setor.destino.colunas + '\n'
    
    for setor in setores:
        if setor.total_itens_setor > 0:
            saida += str(setor).ljust(dia.setor.destino.colunas - 20) + " %.4d %14.2f" % (setor.total_itens_setor, setor.total_valor_setor) + '\n'
    
    impressao.views.imprime_caixa(saida, dia.setor.destino, None, '')

def imprime_produtos(dia):
    '''
    Imprime o relatório dos produtos
    '''
    dia = Dia_funcionamento.objects.get(id = dia)
    
    # Produtos
    total_produtos = {}
    quantidade_produtos = {}
    
    total_produtos_categoria = {}
    quantidade_produtos_categoria = {}
    
    categorias = Categoria.objects.all()
    for categoria in categorias:
        categoria.itens = Item.objects.filter(produto__categoria = categoria, pedido__dia = dia, estado = 2)
        categoria.produtos = Produto.objects.filter(categoria = categoria)
        
        for produto in categoria.produtos:
            total_produtos[produto.id] = 0.0
            quantidade_produtos[produto.id] = 0
        
        categoria.total_produtos_categoria = 0.0
        categoria.quantidade_produtos_categoria = 0
        
        for item in categoria.itens:
            total_produtos[item.produto.id] = float(total_produtos[item.produto.id]) + int(item.quantidade) * float(item.produto.preco_de_venda)
            quantidade_produtos[item.produto.id] += int(item.quantidade)
    
        for produto in categoria.produtos:
            produto.total_produtos = total_produtos[produto.id]
            produto.quantidade_produtos = quantidade_produtos[produto.id]
            
            categoria.total_produtos_categoria += total_produtos[produto.id]
            categoria.quantidade_produtos_categoria += quantidade_produtos[produto.id]
    
    saida = ""
    saida += str(dia).center(dia.setor.destino.colunas) + '\n\n'
    
    for categoria in categorias:
        if categoria.quantidade_produtos_categoria > 0:
            saida += '-' * dia.setor.destino.colunas + '\n'
            saida += ("\n\nCategoria %s - %d - R$ %.2f" % (str(categoria), categoria.quantidade_produtos_categoria, categoria.total_produtos_categoria)).replace('.', ',') + '\n'
            saida += '-' * dia.setor.destino.colunas + '\n'
            
            saida += "Descricao".ljust(dia.setor.destino.colunas - 20) + " Quant         Total" + '\n'
            
            for produto in categoria.produtos:
                if produto.quantidade_produtos > 0:
                    saida += ("%s %.4d     %10.2f" % (str(produto).ljust(dia.setor.destino.colunas - 20), produto.quantidade_produtos, produto.total_produtos)).replace('.', ',') + '\n'
            
    impressao.views.imprime_caixa(saida, dia.setor.destino, None, '')

def imprime_funcionarios(dia):
    '''
    Imprime o relatório dos funcionários
    '''
    
    dia = Dia_funcionamento.objects.get(id = dia)
    
    pedidos = Pedido.objects.filter(dia = dia)
    pedidos_id = []
    for pedido in pedidos:
        pedidos_id.append(pedido.id)
    
    funcionarios = User.objects.all()
    
    saida = ""
    saida += str(dia).center(dia.setor.destino.colunas) + '\n\n'
    saida += '-' * dia.setor.destino.colunas + '\n'
    saida += "Func. ".ljust(dia.setor.destino.colunas - 14) + "Qt. ".rjust(4) + "Valor".rjust(10) + "\n"
    
    for funcionario in funcionarios:
        funcionario.itens = Item.objects.filter(usuario = funcionario, pedido_id__in = pedidos_id, estado = 2)
        
        funcionario.quantidade = 0
        funcionario.total = 0.0
        
        for item in funcionario.itens:
            funcionario.total = float(funcionario.total) + int(item.quantidade) * float(item.produto.preco_de_venda)
            funcionario.quantidade += item.quantidade
        
        saida += str(funcionario).ljust(dia.setor.destino.colunas - 14) + (str(funcionario.quantidade) + " ").rjust(4) + ("%.2f" % funcionario.total).replace('.', ',').rjust(10) + "\n"
    
    
    impressao.views.imprime_caixa(saida, dia.setor.destino, None, '')
    
    

def imprime_entrada_saida(dia):
    '''
    Imprime...
    '''
    dia = Dia_funcionamento.objects.get(id = dia)
    
    retiradas    = Movimentacao.objects.filter(dia = dia, tipo = True)
    recebimentos = Movimentacao.objects.filter(dia = dia, tipo = False)
    
    saida = ""
    
    saida += str(dia).center(dia.setor.destino.colunas) + '\n\n'
    
            
    saida += '-' * dia.setor.destino.colunas + '\n'
    saida += "\nEntradas em dinheiro" + '\n'
    saida += '-' * dia.setor.destino.colunas + '\n'
    
    i = 0
    for entrada in recebimentos:
        i += 1
        
        saida += "%.3d " % i + ("R$ %10.2f" % entrada.valor).rjust(dia.setor.destino.colunas - 4).replace('.', ',') + '\n'
        
        if entrada.usuario:
            saida += str(entrada.usuario) + '\n'
        
        if entrada.observacao != '':
            saida += entrada.observacao + '\n'
        
        if i != retiradas.count():
            saida += '-' * dia.setor.destino.colunas + '\n'
    
    
    saida += "\nSaidas em dinheiro" + '\n'
    saida += '-' * dia.setor.destino.colunas + '\n'
    
    i = 0
    for entrada in retiradas:
        i += 1
        
        saida += "%.3d " % i + ("R$ %10.2f" % entrada.valor).rjust(dia.setor.destino.colunas - 4).replace('.', ',') + '\n'
        
        if entrada.usuario:
            saida += str(entrada.usuario) + '\n'
        
        if entrada.observacao != '':
            saida += entrada.observacao + '\n'
        
        if i != retiradas.count():
            saida += '-' * dia.setor.destino.colunas + '\n'
    
    impressao.views.imprime_caixa(saida, dia.setor.destino, None, '')

def imprime(request):
    if request.is_ajax():
        if request.POST.has_key('id'):
            id = request.POST['id']
            dia = int(request.POST['dia'])
            
            if id == 'caixa':
                imprime_caixa(dia)
            elif id == 'mesas':
                imprime_mesas(dia)
            elif id == 'pedidos':
                imprime_pedidos(dia)
            elif id == 'setor':
                imprime_setor(dia)
            elif id == 'produtos':
                imprime_produtos(dia)
            elif id == 'funcionarios':
                imprime_funcionarios(dia)
            elif id == 'entrada_saida':
                imprime_entrada_saida(dia)
    
            #print 'imprime ' + id + ' id do dia ' + str(dia)
            Evento(usuario = request.user, pedido = None, descricao = 'Imrpimiu relatorio de ' + id).save()
    
    return HttpResponse(None)